// 将十六进制颜色转换为RGB格式

function hexToRgb(hex) {


    // 处理缩写形式（例如：#03F）


    if (hex.length === 4) {


        hex = '#' + [hex[1], hex[1], hex[2], hex[2], hex[3], hex[3]].join('');


    }


    // 提取红、绿、蓝分量


    const bigint = parseInt(hex.slice(1), 16);


    const r = (bigint >> 16) & 255;


    const g = (bigint >> 8) & 255;


    const b = bigint & 255;


    return [r, g, b];


}


// 计算欧几里得距离


function colorDistance(color1, color2) {


    const [r1, g1, b1] = color1;


    const [r2, g2, b2] = color2;


    return Math.sqrt(


        Math.pow(r1 - r2, 2) +


        Math.pow(g1 - g2, 2) +


        Math.pow(b1 - b2, 2)


    );


}


// 判断两种颜色是否接近


function areColorsClose(color1, color2, threshold = 50) {


    const rgb1 = hexToRgb(color1);


    const rgb2 = hexToRgb(color2);


    return colorDistance(rgb1, rgb2) < threshold;


}


// 示例


const color1 = "#ff0000"; // 红色


const color2 = "#ff0101"; // 接近红色


console.log(areColorsClose(color1, color2)); // 输出：true